# ==================================================================================
# 客户端-服务器协议生成器（CS Protocol）
# ==================================================================================
# 功能说明：
#   编译客户端与服务器之间的通信协议文件
#   CS = Client-Server，定义了客户端和服务器的交互消息
# 
# 输入：
#   ${PROTOCOL_CS_LOGIC_PATH}/*.proto  - CS协议定义文件
# 
# 输出：
#   .pb.h / .pb.cc      - 标准C++ Protobuf代码（服务器端使用）
#   .nanopb.h / .cc     - NanoPB嵌入式代码（客户端使用）
# 
# 应用场景：
#   - 客户端登录请求/响应
#   - 游戏操作指令
#   - 游戏状态同步
#   - 聊天消息
#   - 背包、商城等功能交互
# ==================================================================================

include ./define.makefile
.PHONY:all

all:${PROTOCOL_CS_LOGIC_H} ${PROTOCOL_CS_LOGIC_CPP} ${PROTOCOL_CS_STRUCT_H} ${PROTOCOL_CS_STRUCT_CPP}

# ----------------------------------
# 编译CS协议文件
# ----------------------------------
${PROTOCOL_CS_LOGIC_H} ${PROTOCOL_CS_LOGIC_CPP} ${PROTOCOL_CS_STRUCT_H} ${PROTOCOL_CS_STRUCT_CPP}:${PROTOCOL_CS_LOGIC_XML}
	@echo "  创建目标目录..."
	mkdir -p ${PROTOCGEN_FILE_PATH}
	mkdir -p ${NEW_PROTOCGEN_FILE_PATH}
	@echo "  编译客户端-服务器协议（生成C++和NanoPB代码）..."
	${PROTOC} $^ --plugin=protoc-gen-nanopb=${NANOPB_PLUGIN}  -I${THIRD_PARTY_INC_PATH} -I${NANOPB_PLUGIN_PROTO} -I${PROTOCOL_PATH} -I${PROTOCOL_SS_PATH} -I${PROTOCOL_SS_LOGIC_PATH} -I${PROTOCOL_CS_LOGIC_PATH} -I${COMMON_LOGIC_META_PATH} -I${RESDB_META_PATH}  -I${PROTOCOL_DB_META_PATH} --cpp_out=${PROTOCGEN_FILE_PATH} --nanopb_out=-e.nanopb:${PROTOCGEN_FILE_PATH}
	@echo "  复制生成的文件到逻辑消息目录..."
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH} --src="${PROTOCOL_CS_LOGIC_H} ${PROTOCOL_CS_LOGIC_CPP}" --dst=${NEW_PROTOCGEN_FILE_PATH}/
	${FILE_COPY_EXE} --work="filecopy" --patch=${GAME_VERSION_PATCH} --src="${PROTOCOL_CS_STRUCT_H} ${PROTOCOL_CS_STRUCT_CPP}" --dst=${NEW_PROTOCGEN_FILE_PATH}/
